# -*- coding:utf-8 -*-
#
import os
from fnmatch import fnmatch
import zipfile


def json_files(hap):
    # 打开cer文件
    f = open("./out/z1.cer", encoding='utf8')
    txt = []
    for line in f:
        txt.append(line.strip())
        # print(line.strip())
        # 判断数据读取结尾位置
        if line.strip() == "-----END CERTIFICATE-----": break
    # 读取到的数据合并为一行，并添加\n换行符。
    singling = ''.join([line.strip() + '\\n' for line in txt])
    # 打开UnsgnedReleasedProfileTemplate.json文件，准备编辑其中内容。
    f = open("./lib/UnsgnedReleasedProfileTemplate.json", encoding='utf8')
    # 编辑好的内容将另存为Release.json，不修改源文件。
    f2 = open("lib/Release.json", 'w')
    t = ''
    tx = ''
    revises = []
    #调用open_hap_files函数并保存返回列表
    revise = open_hap_files(hap)
    #删除列表最后一个元素的逗号
    if len(revise) != 1:
        revise[len(revise)-1] = revise[len(revise)-1].strip(',')
    #将列表revise合入待处理数据中并保存到revises.
    for line in f:
        if fnmatch(line.strip(), '"allowed-acls":['):
            revises.append(line)
            for lik in revise:
                if fnmatch(lik, '"bundle-name":*') == 0:
                    revises.append(lik)
        else:
            revises.append(line)
    # 格式化输出内容
    for line in revises:
        # print(line.strip())
        if fnmatch(line.strip(), '"bundle-name":*'):
            # print(line.strip())
            line = revise[0]
        # 当时不知道line.strip()是啥作用，结果搞得重新格式化了一次哈哈哈。
        # 判断这一行数据是否有"},",以便确认添加"\t"tap符号的数量。
        if fnmatch(line.strip(), '},'):
            t = tx
        # 判断这一行数据是否为"}",以便确认添加"\t"tap符号的数量。
        if line.strip() == "}":
            t = ''
        # 判断这一行数据是否有""distribution-certificate":",以便添加证书数据。
        if line.strip().startswith('"distribution-certificate":'):
            f2.write(t + '"distribution-certificate":' + '"' + singling + '",\n')
            # print(t + '"distribution-certificate":' + '"' + singling)
        else:
            f2.write(t + line.strip() + "\n")
            # print(t + line.strip())
        # 判断这一行数据是否有"*{",以便确认添加"\t"tap符号的数量。
        if fnmatch(line.strip(), '*{'):
            tx = t
            t = t + '\t'
    f2.close()
    f.close()


def open_hap_files(hap='./iut/a1.hap'):
    # 打开hap包并提取里面的module.json文件。
    zip_open = zipfile.ZipFile(os.path.join(os.getcwd(), hap))
    data = zip_open.read('module.json')
    # 完成写文件操作。
    (lambda f1, d: (f1.write(d), f1.close()))(open(r'./iut/module.json', 'wb'), data)
    zip_open.close()
    # 打开cer文件
    f = open("./iut/module.json", encoding='utf8')
    txt = []
    txt2 = ''
    revise = []
    for line in f:
        txt.append(line.strip())
        txt2 = txt[0]
    txt = txt2.split(',')
    for line in txt:
        #print(line)
        if fnmatch(line, '"bundleName" :*'):
            revise.append('"bundle-name":"' + line.lstrip('"bundleName" :*') + ',')
            print('hap信息：')
            print('"bundle-name":"' + line.lstrip('"bundleName" :*') + ',')
        else:
            if fnmatch(line, '*{"name" : "ohos.permission*'):
                revise.append('"' + line.lstrip('"requestPermissions" :[{"name" : *').rstrip('}]') + ',')
                print('"' + line.lstrip('"requestPermissions" :[{"name" : *').rstrip('}]') + ',')
    return revise


#open_hap_files()
